Infodengue

info.dengue.mat.br

This Jupyter notebook, describes how to access and visualize Infodengue’s datasets using the R language. For more information about the data and how to cite them, visit here.

To execute this notebook, the following libraries are necessary:

library(tidyverse)
Registered S3 methods overwritten by 'dbplyr':
  method         from
  print.tbl_lazy
  print.tbl_sql
── Attaching packages ────────────────────────────────────────────────── tidyverse 1.3.1 ──
✓ ggplot2 3.3.5     ✓ purrr   0.3.4
✓ tibble  3.1.4     ✓ dplyr   1.0.7
✓ tidyr   1.1.3     ✓ stringr 1.4.0
✓ readr   2.0.1     ✓ forcats 0.5.1
── Conflicts ───────────────────────────────────────────────────── tidyverse_conflicts() ──
x dplyr::filter() masks stats::filter()
x dplyr::lag()    masks stats::lag()
library(tidyverse)
library(httr)
library(zoo)

Attaching package: ‘zoo’

The following objects are masked from ‘package:base’:

    as.Date, as.Date.numeric

Data query

As tabelas geradas pelo Infodengue contem dados agregados por semana provenientes de diferentes fontes. Elas podem ser consultadas via formulário, ou diretamente do R, por meio de uma consulta à API.

Infodengue’s tables have data aggregated by week, provided by different sources. They could be consulted by a form, or directly from R, via consult of an API.

This functionality is available via the URL: https://info.dengue.mat.br/api/alertcity?params: must contain the following parameters:

geocode: city's IBGE code
disease: desease type to be consulted (str:dengue|chikungunya|zika)
format: file extension/format (str:json|csv)
ew_start: epidemiological week initial consultation (int:1-53)
ew_end: epidemiological week final consultation (int:1-53)
ey_start: year of initial consultation  (int:0-9999)
ey_end: year of final consultation  (int:0-9999)

Every parameter mentioned so far is obligatory for the consultation. The following example shows the requisition of the register of dengue between 1 and 52 of the year 2020, in Rio de Janeiro (geocodigo = 3304557) on CSV: :

https://info.dengue.mat.br/api/alertcity?geocode=3304557&disease=dengue&format=csv&ew_start=1&ew_end=52&ey_start=2020&ey_end=2020

How to do it using R?

1. Define the parameters

Verify if the consult is correct:

cons1
[1] "https://info.dengue.mat.br/api/alertcity?geocode=3304557&disease=dengue&format=csv&ew_start=1&ew_end=52&ey_start=2021&ey_end=2021"

2. Consulting:

glimpse(dados)
Rows: 40
Columns: 21
$ data_iniSE       <date> 2021-01-03, 2021-01-10, 2021-01-17, 2021-01-24, 2021-01-31, 202…
$ SE               <dbl> 202101, 202102, 202103, 202104, 202105, 202106, 202107, 202108, …
$ casos_est        <dbl> 9, 11, 14, 30, 18, 17, 17, 25, 23, 32, 36, 43, 47, 74, 64, 41, 4…
$ casos_est_min    <dbl> 9, 11, 14, 30, 18, 17, 17, 25, 23, 32, 36, 43, 47, 74, 64, 41, 4…
$ casos_est_max    <dbl> 9, 11, 14, 30, 18, 17, 17, 25, 23, 32, 36, 43, 47, 74, 64, 41, 4…
$ casos            <dbl> 9, 11, 14, 30, 18, 17, 17, 25, 23, 32, 36, 43, 47, 74, 64, 41, 4…
$ p_rt1            <dbl> 0.64216300, 0.73637200, 0.82569900, 0.99771600, 0.56761300, 0.24…
$ p_inc100k        <dbl> 0.133377, 0.163016, 0.207475, 0.444588, 0.266753, 0.251933, 0.25…
$ Localidade_id    <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ nivel            <dbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1…
$ id               <dbl> 3.304557e+17, 3.304557e+17, 3.304557e+17, 3.304557e+17, 3.304557…
$ versao_modelo    <date> 2021-10-13, 2021-10-13, 2021-10-13, 2021-10-13, 2021-10-13, 202…
$ tweet            <dbl> 23, 20, 26, 28, 25, 16, 30, 38, 11, 142, 12, 24, 35, 19, 32, 13,…
$ Rt               <dbl> 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1…
$ pop              <dbl> 6747815, 6747815, 6747815, 6747815, 6747815, 6747815, 6747815, 6…
$ tempmin          <dbl> 24, 24, 24, 25, 24, 22, 24, 23, 24, 23, 24, 24, 23, 21, 20, 20, …
$ umidmax          <dbl> 90, 89, 84, 80, 85, 90, 95, 95, 90, 96, 93, 91, 93, 94, 92, 92, …
$ receptivo        <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0…
$ transmissao      <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ nivel_inc        <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ notif_accum_year <dbl> 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032…

The data table

The available variables are:

  • data_iniSE: First day of the epidemiological week (Sunday);
  • SE: epidemiological week;
  • casos_est: Estimated number of cases per week using the nowcasting model (note: Values are updated retrospectively every week);
  • casos_est_min e casos_est_max: 95% credibility interval of the estimated number of cases;
  • casos: Number of reported cases per week (Values are updated retrospectively every week);
  • p_rt1: Probability of (Rt> 1). For issuing the orange alert, we use criterion p_rt1 > 0.95 for 3 weeks or more;
  • p_inc100k: Estimated incidence rate per 100,000;
  • Localidade_id: Sub-municipality division (currently implemented only in Rio de Janeiro);
  • nivel: Alert level (1 = green, 2 = yellow, 3 = orange, 4 = red);
  • id: Numerical index;
  • versao_modelo: Model version (internal use);
  • tweet: Number of messages mentioning dengue symptoms within geolocated tweets. Source: Dengue Observatory / UFMG;
  • Rt: Point estimate of the reproductive number of cases, see (Know more);
  • pop: estimated population (IBGE);
  • tempmin: average of the daily minimum temperatures along the week;
  • umidmax: average of the daily maximum relative air humidity along the week;
  • receptivo: indicates climate receptivity, i.e., conditions for high vectorial capacity. 0 = - - unfavorable, 1 = favorable, 2 = favorable this week and last week, 3 = favorable for at least - three weeks (sufficient for completing a transmission cycle);
  • transmissao: evidence of sustained transmission: 0 = no evidence, 1 = possible, 2 = likely, 3 = highly likely;
  • nivel_inc: Estimated incidence below the pre-epidemic threshold, 1 = above the pre-epidemic threshold, but below the epidemic threshold, 2 = above the epidemic threshold;
  • notif_accum_year: accumulated number of cases per year;

3. Plotting examples

LS0tCnRpdGxlOiAiIgphdXRob3I6ICcnCm91dHB1dDogaHRtbF9ub3RlYm9vawogIAotLS0KCmBgYHtyIGluY2x1ZGUgPSBGQUxTRX0gCmtuaXRyOjpvcHRzX2NodW5rJHNldChtZXNzYWdlICA9IEZBTFNFICwgd2FybmluZz1GQUxTRSkKYGBgCiMgSW5mb2Rlbmd1ZQoKW2luZm8uZGVuZ3VlLm1hdC5icl0oaHR0cDovL2luZm8uZGVuZ3VlLm1hdC5icikKCgpUaGlzIEp1cHl0ZXIgbm90ZWJvb2ssIGRlc2NyaWJlcyBob3cgdG8gYWNjZXNzIGFuZCB2aXN1YWxpemUgSW5mb2Rlbmd1ZSdzIGRhdGFzZXRzIHVzaW5nIHRoZSBSIGxhbmd1YWdlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGF0YSBhbmQgaG93IHRvIGNpdGUgdGhlbSwgdmlzaXQgW2hlcmVdKGh0dHBzOi8vaW5mby5kZW5ndWUubWF0LmJyL2luZm9ybWFjb2VzKS4KClRvIGV4ZWN1dGUgdGhpcyBub3RlYm9vaywgdGhlIGZvbGxvd2luZyBsaWJyYXJpZXMgYXJlIG5lY2Vzc2FyeToKCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShodHRyKQpsaWJyYXJ5KHpvbykKYGBgCgojIyBEYXRhIHF1ZXJ5CgpBcyB0YWJlbGFzIGdlcmFkYXMgcGVsbyBJbmZvZGVuZ3VlIGNvbnRlbSBkYWRvcyBhZ3JlZ2Fkb3MgcG9yIHNlbWFuYSBwcm92ZW5pZW50ZXMgZGUgZGlmZXJlbnRlcyBmb250ZXMuIEVsYXMgcG9kZW0gc2VyIGNvbnN1bHRhZGFzIHZpYSBbZm9ybXVsw6FyaW9dKGh0dHBzOi8vaW5mby5kZW5ndWUubWF0LmJyL3NlcnZpY2VzL2FwaSksIG91IGRpcmV0YW1lbnRlIGRvIFIsIHBvciBtZWlvIGRlIHVtYSBjb25zdWx0YSDDoCBBUEkuCgpJbmZvZGVuZ3VlJ3MgdGFibGVzIGhhdmUgZGF0YSBhZ2dyZWdhdGVkIGJ5IHdlZWssIHByb3ZpZGVkIGJ5IGRpZmZlcmVudCBzb3VyY2VzLiBUaGV5IGNvdWxkIGJlIGNvbnN1bHRlZCBieSBhIFtmb3JtXShodHRwczovL2luZm8uZGVuZ3VlLm1hdC5ici9zZXJ2aWNlcy9hcGkpLCBvciBkaXJlY3RseSBmcm9tIFIsIHZpYSBjb25zdWx0IG9mIGFuIEFQSS4gCgpUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgYXZhaWxhYmxlIHZpYSB0aGUgVVJMOiBodHRwczovL2luZm8uZGVuZ3VlLm1hdC5ici9hcGkvYWxlcnRjaXR5P3BhcmFtczogbXVzdCBjb250YWluIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczoKCgogICAgZ2VvY29kZTogY2l0eSdzIElCR0UgY29kZQogICAgZGlzZWFzZTogZGVzZWFzZSB0eXBlIHRvIGJlIGNvbnN1bHRlZCAoc3RyOmRlbmd1ZXxjaGlrdW5ndW55YXx6aWthKQogICAgZm9ybWF0OiBmaWxlIGV4dGVuc2lvbi9mb3JtYXQgKHN0cjpqc29ufGNzdikKICAgIGV3X3N0YXJ0OiBlcGlkZW1pb2xvZ2ljYWwgd2VlayBpbml0aWFsIGNvbnN1bHRhdGlvbiAoaW50OjEtNTMpCiAgICBld19lbmQ6IGVwaWRlbWlvbG9naWNhbCB3ZWVrIGZpbmFsIGNvbnN1bHRhdGlvbiAoaW50OjEtNTMpCiAgICBleV9zdGFydDogeWVhciBvZiBpbml0aWFsIGNvbnN1bHRhdGlvbiAgKGludDowLTk5OTkpCiAgICBleV9lbmQ6IHllYXIgb2YgZmluYWwgY29uc3VsdGF0aW9uICAoaW50OjAtOTk5OSkKCkV2ZXJ5IHBhcmFtZXRlciBtZW50aW9uZWQgc28gZmFyIGlzIG9ibGlnYXRvcnkgZm9yIHRoZSBjb25zdWx0YXRpb24uIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyB0aGUgcmVxdWlzaXRpb24gb2YgdGhlIHJlZ2lzdGVyIG9mIGRlbmd1ZSBiZXR3ZWVuIDEgYW5kIDUyIG9mIHRoZSB5ZWFyIDIwMjAsIGluIFJpbyBkZSBKYW5laXJvIChnZW9jb2RpZ28gPSAzMzA0NTU3KSBvbiBDU1Y6IDoKCmh0dHBzOi8vaW5mby5kZW5ndWUubWF0LmJyL2FwaS9hbGVydGNpdHk/Z2VvY29kZT0zMzA0NTU3JmRpc2Vhc2U9ZGVuZ3VlJmZvcm1hdD1jc3YmZXdfc3RhcnQ9MSZld19lbmQ9NTImZXlfc3RhcnQ9MjAyMCZleV9lbmQ9MjAyMAoKKipIb3cgdG8gZG8gaXQgdXNpbmcgUj8qKiAKCioqMS4gRGVmaW5lIHRoZSBwYXJhbWV0ZXJzKioKClZlcmlmeSBpZiB0aGUgY29uc3VsdCBpcyBjb3JyZWN0OgoKYGBge3J9CnVybCA8LSAiaHR0cHM6Ly9pbmZvLmRlbmd1ZS5tYXQuYnIvYXBpL2FsZXJ0Y2l0eT8iCmdlb2NvZGUgPC0gMzMwNDU1NwpkaXNlYXNlIDwtICJkZW5ndWUiCmZvcm1hdCA8LSAiY3N2Igpld19zdGFydCA8LSAxCmV3X2VuZCA8LSA1MgpleV9zdGFydCA8LSAyMDIxCmV5X2VuZCA8LSAyMDIxCgojIGRvIG5vdCBjaGFuZ2UKY29uczEgPC0gcGFzdGUwKHVybCwiZ2VvY29kZT0iLGdlb2NvZGUsIiZkaXNlYXNlPSIsZGlzZWFzZSwiJmZvcm1hdD0iLGZvcm1hdCwiJmV3X3N0YXJ0PSIsZXdfc3RhcnQsIiZld19lbmQ9Iixld19lbmQsIiZleV9zdGFydD0iLGV5X3N0YXJ0LCImZXlfZW5kPSIsZXlfZW5kKQpjb25zMQpgYGAKCioqMi4gQ29uc3VsdGluZzoqKgoKYGBge3J9CmRhZG9zIDwtIHJlYWRfY3N2KGNvbnMxKSAlPiUgYXJyYW5nZShkYXRhX2luaVNFKQpnbGltcHNlKGRhZG9zKQpgYGAKCiMjIFRoZSBkYXRhIHRhYmxlCgpUaGUgYXZhaWxhYmxlIHZhcmlhYmxlcyBhcmU6CgotIGRhdGFfaW5pU0U6IEZpcnN0IGRheSBvZiB0aGUgZXBpZGVtaW9sb2dpY2FsIHdlZWsgKFN1bmRheSk7Ci0gU0U6IGVwaWRlbWlvbG9naWNhbCB3ZWVrOwotIGNhc29zX2VzdDogRXN0aW1hdGVkIG51bWJlciBvZiBjYXNlcyBwZXIgd2VlayB1c2luZyB0aGUgbm93Y2FzdGluZyBtb2RlbCAobm90ZTogVmFsdWVzIGFyZSB1cGRhdGVkIHJldHJvc3BlY3RpdmVseSBldmVyeSB3ZWVrKTsKLSBjYXNvc19lc3RfbWluIGUgY2Fzb3NfZXN0X21heDogOTUlIGNyZWRpYmlsaXR5IGludGVydmFsIG9mIHRoZSBlc3RpbWF0ZWQgbnVtYmVyIG9mIGNhc2VzOwotIGNhc29zOiBOdW1iZXIgb2YgcmVwb3J0ZWQgY2FzZXMgcGVyIHdlZWsgKFZhbHVlcyBhcmUgdXBkYXRlZCByZXRyb3NwZWN0aXZlbHkgZXZlcnkgd2Vlayk7Ci0gcF9ydDE6IFByb2JhYmlsaXR5IG9mIChSdD4gMSkuIEZvciBpc3N1aW5nIHRoZSBvcmFuZ2UgYWxlcnQsIHdlIHVzZSBjcml0ZXJpb24gcF9ydDEgPiAwLjk1IGZvciAzIHdlZWtzIG9yIG1vcmU7Ci0gcF9pbmMxMDBrOiBFc3RpbWF0ZWQgaW5jaWRlbmNlIHJhdGUgcGVyIDEwMCwwMDA7Ci0gTG9jYWxpZGFkZV9pZDogU3ViLW11bmljaXBhbGl0eSBkaXZpc2lvbiAoY3VycmVudGx5IGltcGxlbWVudGVkIG9ubHkgaW4gUmlvIGRlIEphbmVpcm8pOwotIG5pdmVsOiBBbGVydCBsZXZlbCAoMSA9IGdyZWVuLCAyID0geWVsbG93LCAzID0gb3JhbmdlLCA0ID0gcmVkKTsKLSBpZDogTnVtZXJpY2FsIGluZGV4OwotIHZlcnNhb19tb2RlbG86IE1vZGVsIHZlcnNpb24gKGludGVybmFsIHVzZSk7Ci0gdHdlZXQ6IE51bWJlciBvZiBtZXNzYWdlcyBtZW50aW9uaW5nIGRlbmd1ZSBzeW1wdG9tcyB3aXRoaW4gZ2VvbG9jYXRlZCB0d2VldHMuIFNvdXJjZTogRGVuZ3VlIE9ic2VydmF0b3J5IC8gVUZNRzsKLSBSdDogUG9pbnQgZXN0aW1hdGUgb2YgdGhlIHJlcHJvZHVjdGl2ZSBudW1iZXIgb2YgY2FzZXMsIHNlZSAoS25vdyBtb3JlKTsKLSBwb3A6IGVzdGltYXRlZCBwb3B1bGF0aW9uIChJQkdFKTsKLSB0ZW1wbWluOiBhdmVyYWdlIG9mIHRoZSBkYWlseSBtaW5pbXVtIHRlbXBlcmF0dXJlcyBhbG9uZyB0aGUgd2VlazsKLSB1bWlkbWF4OiBhdmVyYWdlIG9mIHRoZSBkYWlseSBtYXhpbXVtIHJlbGF0aXZlIGFpciBodW1pZGl0eSBhbG9uZyB0aGUgd2VlazsKLSByZWNlcHRpdm86IGluZGljYXRlcyBjbGltYXRlIHJlY2VwdGl2aXR5LCBpLmUuLCBjb25kaXRpb25zIGZvciBoaWdoIHZlY3RvcmlhbCBjYXBhY2l0eS4gMCA9IC0gLSB1bmZhdm9yYWJsZSwgMSA9IGZhdm9yYWJsZSwgMiA9IGZhdm9yYWJsZSB0aGlzIHdlZWsgYW5kIGxhc3Qgd2VlaywgMyA9IGZhdm9yYWJsZSBmb3IgYXQgbGVhc3QgLSB0aHJlZSB3ZWVrcyAoc3VmZmljaWVudCBmb3IgY29tcGxldGluZyBhIHRyYW5zbWlzc2lvbiBjeWNsZSk7Ci0gdHJhbnNtaXNzYW86IGV2aWRlbmNlIG9mIHN1c3RhaW5lZCB0cmFuc21pc3Npb246IDAgPSBubyBldmlkZW5jZSwgMSA9IHBvc3NpYmxlLCAyID0gbGlrZWx5LCAzID0gaGlnaGx5IGxpa2VseTsKLSBuaXZlbF9pbmM6IEVzdGltYXRlZCBpbmNpZGVuY2UgYmVsb3cgdGhlIHByZS1lcGlkZW1pYyB0aHJlc2hvbGQsIDEgPSBhYm92ZSB0aGUgcHJlLWVwaWRlbWljIHRocmVzaG9sZCwgYnV0IGJlbG93IHRoZSBlcGlkZW1pYyB0aHJlc2hvbGQsIDIgPSBhYm92ZSB0aGUgZXBpZGVtaWMgdGhyZXNob2xkOwotIG5vdGlmX2FjY3VtX3llYXI6IGFjY3VtdWxhdGVkIG51bWJlciBvZiBjYXNlcyBwZXIgeWVhcjsKCioqMy4gUGxvdHRpbmcgZXhhbXBsZXMqKgoKYGBge3Igb3V0LndpZHRoPSAiMTljbSJ9CmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShwbG90bHkpCgojUmVwb3J0ZWQgY2FzZXMgYW5kIGVzdGltYXRlZCBjYXNlcwoKY29scyA8LSBjKCJDYXNvcyBFc3RpbWFkb3MiPSJibHVlIiwiQ2Fzb3MgTm90aWZpY2Fkb3MiPSJsaWdodGJsdWUiKQpwIDwtIGdncGxvdChkYWRvcyxhZXMoeCA9IGRhdGFfaW5pU0UsIHkgPSBjYXNvcykpICsgCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIGFlcyh4ID0gZGF0YV9pbmlTRSwgeSA9IGNhc29zLGZpbGwgPSAiQ2Fzb3MgTm90aWZpY2Fkb3MiKSkrCiAgZ2VvbV9saW5lKGFlcyh4ID0gZGF0YV9pbmlTRSwgeSA9IGNhc29zX2VzdCwgY29sb3VyPSAiQ2Fzb3MgRXN0aW1hZG9zIikpICsKICBnZW9tX2xpbmUoYWVzKHggPSBkYXRhX2luaVNFLCB5ID0gY2Fzb3NfZXN0X21heCwgY29sb3VyPSAiQ2Fzb3MgRXN0aW1hZG9zIiksbGluZXR5cGUgPSAiZG90dGVkIikgKwogIGdlb21fbGluZShhZXMoeCA9IGRhdGFfaW5pU0UsIHkgPSBjYXNvc19lc3RfbWluLCBjb2xvdXI9ICJDYXNvcyBFc3RpbWFkb3MiKSxsaW5ldHlwZSA9ICJkb3R0ZWQiKSArCiAgbGFicyh5PSIgQ29udGFnZW0gZGUgY2Fzb3MiKSsKICBzY2FsZV94X2RhdGUoZGF0ZV9sYWJlbHMgPSAiJWItJXkiLGRhdGVfYnJlYWtzID0gIjYgbW9udGhzIikrCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gImxpZ2h0Ymx1ZSIpICsKICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9ICJibHVlIikgKwogIHRoZW1lKGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwgbGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpCgpnZ3Bsb3RseShwKQoKYGBgCgoKCgoK